package jzqb.service;

import haha.life.common.CutPageBean;
import jzqb.bo.NoticeBo;
import jzqb.po.NoticePo;
import jzqb.vo.NoticeVo;

import java.util.List;

/**
 * Description:
 *
 * @author BaiGe
 * @date: 2021/4/7 14:25
 * @Version 1.0
 */
public interface INoticeService {

    /**
     * 展示通知公告--后台
     * @param noticeBo
     * @return
     */
    CutPageBean<NoticeVo> showNotice(NoticeBo noticeBo);

    /**
     * 插入通知公告
     * @param noticePo 通知公告实体
     * @return 成功|失败
     */
    Boolean  insertNotice(NoticePo noticePo);

    /**
     * 删除通知公告
     * @param id  通知公告ID
     * @return 成功|失败
     */
    Boolean  delNotice(Integer id);

    /**
     * 修改通知公告
     * @param noticePo  通知公告实体
     * @return 成功|失败
     */
    Boolean  updateNotice(NoticePo noticePo);

    /**
     * 获取通知公告分类
     * @return
     */
    List<NoticeVo>  getNoticeSort();

    /**
     * 置顶全部改为否
     * @return
     */
    Boolean serAllIsTopToNo();

    /*----------------------前台------------------------------*/
    /**
     * 展示通知公告--前台
     * @param noticeBo
     * @return
     */
    CutPageBean<NoticeVo> showNoticeFront(NoticeBo noticeBo);

    /**
     * 展示某条通知公告
     * @param noticeId
     * @return
     */
    NoticePo  showSingleNotice(Integer noticeId);

    /**
     * 修改已读列表
     * @param noticeId
     * @return
     */
     Boolean  updateReadUser(Integer noticeId,String userId);

    /**
     * 展示未通知公告读数量(我的消息-小红点)
     * @param noticeBo
     * @return
     */
    long getUnReadNoticeNum(NoticeBo noticeBo);

    /*----------------------系统公告------------------------------*/
    /**
     * 展示系统公告- 目标所有为:是
     * @param noticeBo
     * @return
     */
    CutPageBean<NoticeVo> showSystemNotice(NoticeBo noticeBo);

    /**
     * 首页展示五条 更新时间最近的系统公告- 目标所有为:是
     * @param
     * @return
     */
    List<NoticeVo> showSystemNoticeLimitFive();

    /**
     * 根据ID 获取系统公告
     * @return
     */
    NoticeVo findSystemNoticeById(Integer noticeId);

}
